home *** CD-ROM | disk | FTP | other *** search
/ Imagine PD 3D / Imagine PD 3D.iso / objects / earth / readme1.txt < prev    next >
Text File  |  1994-10-19  |  23KB  |  558 lines

  1. The Amiga-Video Journal                  June 1991
  2.                             vol 2 issue 3
  3.  
  4. 3D MODELING -"Earth Rise" - An Imagine Project
  5.  
  6. by R.L. Kellogg, PhD
  7.  
  8.  
  9. Creating an animation of the rotating earth as seen from the moon 
  10. was inspired by the incredible animation graphics of the PBS 
  11. series "The Astronomers".  Since the Amiga can also produce 
  12. quality graphics and animation, I decided to create my own space 
  13. art.  The approach was conceptually simple:  digitize a map of 
  14. the earth and, using a 3D rendering program, wrap the image 
  15. around a wireframe sphere. I would do the same thing again, 
  16. creating an "atmosphere" of clouds for an extra effect.  A 
  17. digital "stage" could be set, hanging the rotating earth in a 
  18. background of stars and filling the foreground with an image of 
  19. lunar terrain.  
  20.  
  21.  
  22. Step 1:  Obtaining the Earth Map
  23.  
  24.  
  25. All of the maps of the earth in atlases, back issues of the 
  26. National Geographic and airline travel magazines had too much 
  27. printing and lettering.  Fortunately, I found one map of the 
  28. world that was simply an outline of continents.  It was an easy 
  29. matter using Digi-View (by NewTek) to digitize the map as a high 
  30. resolution (640 x 400) image in "Line" mode, creating a 2-color 
  31. map in only black and white.  By adjusting the brightness 
  32. control, I found a setting which clearly showed the continents.  
  33.  
  34. With DeluxePaint-III (by Electronic Arts) set to the HiRes 16-
  35. color mode, I loaded the 2-color map into the 16-color palette.  
  36. I then adjusted the palette to provide a range of pastel colors 
  37. for drawing yellow-tan deserts, brown mountain ranges, flat-green 
  38. forests, and deep blue oceans.
  39.  
  40. To insure that I only drew inside the continental boundries, I 
  41. locked the blue ocean color with the "make stencil" command. This 
  42. prevented any of my drawing from altering the ocean.  Then for 
  43. several hours I drew deserts, mountains, and forests, using 
  44. National Geographic and several other atlases as a guide.  
  45. Whenever I was able to make a feature that I liked, I used the 
  46. brush command to replicate it.  Mountain chains were easy that 
  47. way!  Sometimes I rotated and scaled (using the perspective) the 
  48. brush to "fit" the geography.  Every 15 minutes or so I would 
  49. save my map to disk, in case of catastrophic failure. In an 
  50. evening I had my artwork finished. 
  51.  
  52.  
  53. Step 2: The Cloud Layer
  54.  
  55.  
  56. I wanted clouds over my earth to add some realism. In fact, I 
  57. wanted the clouds as a separate layer just hovering over the 
  58. earth.  This meant that I needed to draw clouds which registered 
  59. to the map that I had draw, but could be separated as a different 
  60. rendering layer. Deluxe Paint III has a way of dealing with 
  61. separate layers: it has a "fix" command to lock the screen image 
  62. into an uneditable background.  This command allows any new art 
  63. work to be created on a separate foreground image plane while the 
  64. background is still visible.  I locked the finished earth map 
  65. into the background and used the airbrush tool to spray on some 
  66. white pixels to represent clouds. Then, I picked up those pixels 
  67. as a series of small brushes and painted the clouds over the map. 
  68. The polar regions were done in solid white, while desert areas 
  69. were left untouched.  I put clouds along the western edges of 
  70. mountain chains and a tropical depression in the Indian Ocean. 
  71. Short jerky motions with the mouse seemed to give the best "cloud 
  72. effect", and I changed my brush often.  Once finished, the entire 
  73. cloud layer was transfered as a large brush to the alternate DP-
  74. III screen.  Then, with the screen format requester, I collapsed 
  75. the number of colors from 16 back to 2 and saved the cloud image, 
  76. which now consisted of only white clouds and color zero 
  77. background.  For proper use in the 3D rendering program, I needed 
  78. the colors reversed.  I used the image utility Butcher (by Eagle 
  79. Tree) to exchange the pixel order in the color registers and make 
  80. the image a "negative" color. The final saved image was therefore 
  81. made of black color zero clouds and white background.
  82.  
  83.  
  84. Step 3:  Imagine
  85.  
  86.  
  87. God may have created the heaven and earth in six days, but to 
  88. learn how to create images using Impulse's 3D rendering program 
  89. "Imagine" takes considerably longer.  But the effort is worth it, 
  90. and after you get to know the program commands, Imagine becomes a 
  91. very powerful 3D rendering program.
  92.  
  93. First, I established a new project on disk df0: called 
  94. "EarthAnim", and from the project screen made a new sub-project  
  95. to hold the selected image renditions.  The subproject was titled 
  96. "EarthRise-Ham", and on initializing Imagine requests rendering 
  97. information of rendering method, screen type, and path.
  98.  
  99. EarthRise-Ham
  100.     Rendering:  Trace
  101.     Picture:    320 x 400        Aspect 12:7 
  102.     Image File: ILBM-12 bit      Ham-yes  Hires-no  Lace-yes
  103.     Image Path: df0:Im_Pix/Ham
  104.     Anim  Path: hd0:EarthAnim    ILBM   
  105.  
  106. Trace was chosen to correctly render the earth's semi-transparent 
  107. atmosphere.  The picture size and aspect were from Imagine's 
  108. preset list for HAM display.  The image file type, ILBM-12, was 
  109. chosen to allow other HAM programs such as Digi-Paint (by New 
  110. Tek) and the Art Department (by ASDG).   The complete animation 
  111. will not fit onto floppy disk, since each HAM image is about 40K 
  112. bytes. In the next article, I'll discuss how to compress the 
  113. animation in HiRes format to a file of about 900K bytes. 
  114.  
  115.  
  116. Step 4: Creating the Earth
  117.  
  118.  
  119. The basic work of creating the earth and the lunar foreground is 
  120. done in Imagine's Detail Editor. In each case an IFF image is 
  121. wrapped onto a geometric shape.  For the earth, it is a sphere.  
  122. For the moon, it is a vertical plane.
  123.  
  124. To start the formation of the earth, I chose "Add Sphere" from 
  125. the Function Menu.  In the viewing windows (called "quads") a 
  126. small, orange circle appears, and in the perspective window a 
  127. small wireframe globe appears.  Moving the mouse to either the 
  128. front, side, or top viewing quads and clicking on the center of 
  129. the orange circle (the axis origin), I change the circle color to 
  130. blue.  Only when the object is blue, that is "pick/selected", can 
  131. I manipulate, move, or transform it. 
  132.  
  133. Rather than use the interactive transformations, I needed a 
  134. precise change in scale for this sphere.  From the Object Menu, I 
  135. select "Transformation" and a requestor appears.  Within the 
  136. transformation requestor I select size and set each x,y, and z 
  137. axis to 100 units, and "Perform" the transformation.  A large 
  138. multifaceted sphere now greets me in the quad and perspective 
  139. views. In summary, the transformation I performed was:
  140.  
  141. Earth Sphere Transformation Properties
  142.  
  143. size    xyz=    100 100 100    position    xyz= 0  0  0
  144.  
  145.  
  146. Step 4: Managing the Attributes
  147.  
  148.  
  149. This is by far the most challenging step.  Not only must 
  150. intrinsic color and texture properties be assigned to the budding 
  151. earth sphere, but the extrinsic properties of the earth from the 
  152. map image must be managed as well.  With the earth sphere 
  153. "pick/selected" (blue mode), I click on "attributes" of the 
  154. Object menu.  The following intrinsic properties were assigned:
  155.  
  156. Earth Sphere Attribute Properties
  157.  
  158. name:        Earth            
  159. color:         255/255/255        dither:        255
  160. reflect:    0/0/0            hardness:      5
  161. filter:        0/0/0
  162. specular:    100/125/175        index refraction: 1.00
  163.  
  164. The specular color is essentially a blue-white highlight, which 
  165. with the low value for hardness, will create a reflection 
  166. highlight with a broad diffuse area.  For this kind of an object, 
  167. fairly high dithering is required to prevent "zoning" or "steps" 
  168. in the color gradients of the final rendering.
  169.  
  170. Special care must be taken with the earth map to insure that it 
  171. wraps correctly around the sphere as a "brush attribute". The 
  172. method is slightly different for a "wrap" that for a "flat" 
  173. transfer.  For the map, I wanted to wrap it around the sphere's 
  174. z-axis. Therefore, clicking on  the Brush-1 "brush attribute" 
  175. box, the following extrinsic properties were assigned: 
  176.  
  177. Brush Attribute Properties
  178.  
  179. brush name:    df0:Im_Images/EarthMap-colormap.pic
  180. brush type:    color
  181. wrap type:    flat x
  182.         wrap z
  183.  
  184. The most difficult part of assigning the "brush attribute" is 
  185. placing the brush axes onto the designated object.  Since this is 
  186. to be a "wrap", the z-axis of the brush needs to be near the z-
  187. axis of the object, the y-axis of the brush nearly non-existent, 
  188. and the x-axis of the brush must extend slightly beyond the 
  189. sphere's actual size. Within the "brush attributes" requestor, I 
  190. chose the "transform" axis option to precise set the earth map 
  191. axes:
  192.  
  193. Brush Attribute Axis Transformation Properties
  194.  
  195. size    xyz= 110  4  300    position    xyz=  0  -2  -150
  196.  
  197. The x-axis was made slightly larger than the 100-unit earth 
  198. sphere.  The y-axis of the brush is nearly non existent. However, 
  199. the brush y-axis position at -2 is very important, since the it 
  200. needs to be ever so slightly to the left of the object axis.  The 
  201. z-axis of the brush is used for scaling the image, and the map is 
  202. stretched upward depending upon the size of z.  The position of 
  203. the z-axis at -150 (that is, one half of 300) insures image 
  204. symmetry with respect to the earth's equator.  
  205.  
  206. After "performing" the axes transformations, I always like to 
  207. make a visual check.  Still within the "brush attribute" 
  208. requestor, I click on the "edit" option which allows interactive 
  209. positioning (move, using the "m" key) or scaling (size, using the 
  210. "s" key) or rotating (using the "r" key). A yellow set of axes 
  211. appears over the earth sphere, showing the brush axes inside a 
  212. rectangle. From the front view, the upper right quadrant of the 
  213. axes rectangle should cover the right half of the sphere.  In the 
  214. top view, the axes rectangle should look like a long, thin box 
  215. going horizontally through the middle of the sphere. Everything 
  216. correct, I tap the "spacebar" and exit the "brush transformation" 
  217. requestor and "brush attribute" requestors.  The earth sphere is 
  218. saved as df0:Objects/earth.obj.  I use a convention of naming 
  219. objects ".wire" if it is just a wireframe object or ".obj" if 
  220. I've attached attributes.
  221.  
  222.  
  223. Step 5: An Onion Skin Atmosphere
  224.  
  225.  
  226. Clearing the Detail Editor, I created another wireframe sphere to 
  227. hold the cloud image in a manner similar to the earth.  However, 
  228. the wireframe sphere will be slightly larger than the earth, for 
  229. in the next step will slip over the earth just like a layer of 
  230. onion skin. Therefore the size of the "Add Sphere" was 105 units 
  231. in x,y, and z. 
  232.  
  233. Clouds Sphere Transformation Properties
  234.  
  235. size    xyz=    105 105 105    position    xyz=    0 0 0
  236.  
  237. The following intrinsic properties were assigned in the 
  238. "attribute" requestor:
  239.  
  240. Clouds Sphere Attribute Properties
  241.  
  242. name:        Earth-Clouds            
  243. color:         255/255/255        dither:            255
  244. reflect:    0/0/0            hardness:     10
  245. filter:        0/0/0
  246. specular:    110/110/110        index refraction 1.4
  247.  
  248. The atmosphere is made slightly harder that the earth beneath, 
  249. and the index of refraction is set to 1.4. The index of 
  250. refraction gives an exaggerated sense of depth between the earth 
  251. and the clouds. Experimenting with the index of refraction can 
  252. have some very exciting effects, especially if the earth and 
  253. clouds are viewed from the night side. A glittering halo effect 
  254. can be produced.
  255.  
  256. The extrinsic properties of the clouds again come from a "brush" 
  257. picture, but this time I use a "filter" brush rather than a 
  258. "color" brush, to create a transparent atmosphere.  Transparent, 
  259. that is, except were color zero exists, which will reflect light 
  260. just as real clouds.
  261.  
  262. Brush Attribute Properties
  263.  
  264. brush name:    df0:Im_Images/EarthMap-clouds.pic
  265. brush type:    filter
  266. wrap type:    flat x
  267.         wrap z
  268.  
  269. The same kind of wrapping technique is used, but the brush axes 
  270. are slightly larger to cover the larger wireframe sphere:
  271.  
  272. Brush Attribute Axis Transformation Properties
  273.  
  274. size    xyz=    110  4  300    position    xyz=     0  -2  -150
  275.  
  276.  
  277. Step 6: The Earth-Clouds Group
  278.  
  279.  
  280. The earth and atmosphere spheres with their attributes were saved 
  281. separately as earth.obj and clouds.obj.  Then, still in Imagine's 
  282. Detail Editor, I load both objects at once and use the "Pick All" 
  283. command from the Pick/Select Menu.  With them both "picked",I 
  284. grouped together using the "Group" command from the Object Menu. 
  285. Both objects are now bright blue. This combine group of two 
  286. spheres is saved as df0:Im_Objects/earth.grp.  Now  I can treat 
  287. "earth.grp" as a single entity and think of it simply as the 
  288. object "earth-clouds".
  289.  
  290.  
  291. Step 7: The Moon Picture
  292.  
  293.  
  294. Although Imagine offers 3D rendering of terrain (or importing 
  295. terrain from programs such as Vista by Virtual Reality), I had a 
  296. terrific 2D HiRes image of the lunar horizon from Apollo 15 
  297. (which conincidentally is available from Virtual Reality).  I 
  298. wanted to use this image as a foreground "prop" on my 3D 
  299. rendering stage.  Therefore, in the Detail Editor I created a 
  300. rectangular plane and pasted the picture of the moon onto it. To 
  301. do this, I clicked on "Add Primitive" from the Function Menu and 
  302. selected "Plane" within the Primitive Types Requestor. I created 
  303. a plane with the following parameters: 
  304.  
  305.  
  306. Plane Parameters:        200    width
  307.                 50    height
  308.                 5    horizontal sections
  309.                 5    vertical sections
  310.  
  311. After "pick/selecting" the plane, I attached the image of the 
  312. moon horizon as a brush attribute:
  313.  
  314. Plane Attribute Properties
  315.  
  316. name:        Moon            
  317. color:         255/255/255        dither:        230 
  318. reflect:    0/0/0            hardness:      0
  319. filter:        0/0/0
  320. specular:    0/0/0            index refraction 1.0
  321.  
  322. Brush Attribute Properties
  323.  
  324. brush name:    df0:Im_Images/MoonHorizon.pic
  325. brush type:    color
  326. wrap type:    flat x
  327.         flat z
  328.  
  329. Since I just want to "paste" my moon picture onto this 
  330. rectangular plane, the "wrap type" for both x and z was chosen as 
  331. "flat-wrap".  This means that the moon brush axes must have an 
  332. origin just to outside the lower left-hand corner of the 
  333. wireframe plane. The result was: 
  334.  
  335. Brush Attribute Axis
  336.  
  337. size    xyz=    404  4  250       position    xyz=  -202  -2  -52
  338.  
  339. The x-axis was scaled to be just as long (wide) as the rectangle, 
  340. and the z-axis about five times higher.  The z-axis scale was 
  341. done by trial and error to fit the moon horizon image into 
  342. pleasant proportions onto the rectangular frame. The finished 
  343. object with attributes was saved as df0:Im_Objects/moon.obj.
  344.  
  345.  
  346. Step 8: Actors Upon a Stage
  347.  
  348.  
  349. The metaphor of a "stage" in 3D rendering is very appropriate: 
  350. the camera, objects, lightsources, etc. become actors which are 
  351. positioned, moved or changed according to a director's script.  
  352. Within Imagine's Stage Editor, the interactive stage is 
  353. represented by the quad viewing windows and the director's script 
  354. is represented by a frame to frame sequencer accessible from the 
  355. "Action" command of the Object Menu. 
  356.  
  357. The following sequence prepared my stage for 64 frames of the 
  358. rotating earth.  I worked between the "Action" director and the 
  359. interactive Stage Editor to position and align my objects.  
  360. However, for this tutorial, all of the setup work can be done 
  361. directly within the "Action" director.  
  362.  
  363.  
  364. Step 9: Action, Action
  365.  
  366.  
  367. Clicking on "Action" in the Stage Editor's Object Menu, I enter 
  368. the "Action" director screen.  "Action" commands are selected at 
  369. the top of the screen in command boxes.  Going left to right 
  370. across the screen are the frame numbers (with initially only one 
  371. frame), and scrolling down the screen are the actors.  Initially 
  372. there are only two actors, "camera" and "global" (really a "stage 
  373. hand" who represents global stage settings).  Additional actors 
  374. are inserted at the line called "new".  Each actor has settings 
  375. of "actor" name, "position", and "alignment".  I'll ignore 
  376. "hinge" and "F/X" (special effects) until another tutorial.
  377.  
  378. a) I first click on the Highest Frame Number and change it from 1 
  379. to 64. Across the "Action" field, the frame numbers 1 to 64 
  380. appear.
  381.  
  382. b) I add my cast of characters one at a time using the "Add" 
  383. command.  The first object I add is the earth.  At the line of 
  384. "new" object, at the intersection of "frame 1" and "actor" I 
  385. click the mouse.  Imagine expects two mouse clicks in the add 
  386. mode: one for the starting frame and one for the ending frame. 
  387. With my first click at frame 1 the "add" command becomes hatched.  
  388. Then, using the scrolling bar, I find the intersection of "frame 
  389. 64" and "actor". I click again.  A red bar appears and fills the 
  390. actor line from frames 1-64. Then a requestor asks for the kind 
  391. of object I'm adding. The earth is a "normal object", which on 
  392. the next requestor I identify by filename as 
  393. df0:Im_Objects/earth.grp.  No cycling or transitioning effects 
  394. are required.  Within the "Action" screen, the "new" actor is now 
  395. automatically chrisened "Earth-Clouds", derived from earth.grp's 
  396. attributes.
  397.  
  398. c) I repeat this procedure, adding into frames 1-64 the new actor 
  399. object df0:Im_Objects/moon.obj.  It appears within the "Action" 
  400. screen as actor "Moon".
  401.  
  402. d) I add another new actor into frames 1-64, but the type object 
  403. is "Light Source".  At the requestor, I define it as a spherical 
  404. light with full intensity of 255/255/255. Its stage name 
  405. automatically becomes "Lightsource".
  406.  
  407. e) I add a second spherical lightsource into frames 1-64, but 
  408. click the requestor boxes for "Cast Shadows" and "Diminish 
  409. Intensity".  Full intensity is set at RGB of 200/200/200.  Its 
  410. stage name becomes "Lightsource.1"
  411.  
  412. f) I add a final object into frames 1-64, but its type is simply 
  413. "Axis".  Its stage name automatically becomes "Track".
  414.  
  415.  
  416. Step 10: More Action
  417.  
  418.  
  419. Now, I switch back in the "Info" mode of the "Action" director.  
  420. If I stopped here and went back to the Stage Editor, I'd find all 
  421. my objects piled up on top of each other at the stage position 
  422. xyz= 0,0,0.  Therefore, I must move the actors to their proper 
  423. positions. 
  424.  
  425. The earth will be "upstage" and slightly to the left.  The camera 
  426. will be a considerable distance "downstage".  In the camera's 
  427. foreground will be the rectangle holding the moon's horizon.  
  428. Illumination for the earth will come from LightSource off to the 
  429. right, giving the illusion of a gibbous earth. My other light,  
  430. Lightsource.1 will closely illuminate the picture of the moon. 
  431. Not wanting two "suns" to illuminate the earth, this light must 
  432. be placed such that the moon picture blocks any of its light and 
  433. only casts a shadow onto the earth. (That's the reason for it's 
  434. "cast shadow" mode).  Lastly, the Track axis will left at xyz= 
  435. 0,0,0 as an object for the camera to point at. 
  436.  
  437. Remaining within the "Action" direction, and using the "Info" 
  438. mode, I click on each of the actor's green "position" bar at 
  439. frame 1 and change positions:
  440.  
  441. a) Camera:        xyz =    0 -1000    0
  442. b) Earth-Clouds        xyz =  -50   400  100
  443. c) Moon            xyz =    0  -320  -80
  444. d) LightSource        xyz = 1000  -250  100
  445. e) LightSource.1    xyz =    0  -600 -150
  446. f) Track        xyz =    0     0    0
  447.  
  448.  
  449. Step 11: Point and Twist
  450.  
  451.  
  452. I'm almost done setting the stage. However, three of the actors 
  453. need special attention while in the "Action" director:  
  454.  
  455. a) Camera:  I delete the blue "align" bar at frame 1, switch to 
  456. the "add" command and double click on the camera's frame 1 align.  
  457. A requestor appears asking whether to Tween, Align or Track.  I 
  458. select "Track" and at the next requestor, inform Imagine that the 
  459. camera should follow the Object Name "Track".  No camera rotation 
  460. is required.
  461.  
  462. b) Earth-Clouds: I delete the blue "align" bar at frame 1, switch 
  463. to the "add" command and click once on Earth-Clouds frame 1 align 
  464. and then once on frame 32.  To make the earth appear in different 
  465. perspective rotations, I select "Tween" and at the next requestor 
  466. inform Imagine that it must change the alignment in between 
  467. frames 1-32 by z = 180 (degrees). This will sequentially rotate 
  468. the earth over 32 frames from its inital alignment to half way 
  469. around. I repeat this procedure, clicking once on frame 33's 
  470. align and then once on frame 64.  I select "Tween" again, but set 
  471. the z axis of rotation to 360.  This finishes the task of 
  472. rotating the earth.  Imagine's logic compensates for looping, so 
  473. although frame 64 ends up exactly at 360 (zero) degrees rotation, 
  474. frame 1 actually is adjusted to start at 5.625 (360/64) degrees.
  475.  
  476. c) Global: Using the "Info" command, I click on the red "actor" 
  477. bar at frame 1.  The only global property I need to change is 
  478. "Star Density" for the number of background stars which Imagine 
  479. will automatically generate. A star density of .01 looks nice.
  480.  
  481. I exit the "Action" director by clicking "Done"
  482.  
  483.  
  484. Step 12: What Does The Stage Look Like
  485.  
  486.  
  487. Within the interactive Stage Editor, I select from the Display 
  488. Menu "Camera View".  If I've done everything correctly in the 
  489. "Action" director, the perspective view should show a wireframe 
  490. earth slightly above and to the left of center. The bottom half 
  491. of the view should be covered by the moon-plane's rectangular 
  492. mesh.  If everything appears to be in its proper position, I 
  493. select "Last Frame" from the Frame Menu" and check again.  In 
  494. creating animations sometimes I managed to lose my actors.  If an 
  495. actor is missing, I return to the "Action" director and check 
  496. that the actor's line goes completely between frame 1 and 64 
  497. (camera and global are the exception).
  498.  
  499. Before leaving the Stage Editor, I "Save Changes" from the 
  500. Project Menu.  I've forgotten to do this more than once, and it 
  501. is very disheartening to lose the results of all this stage 
  502. planning.
  503.  
  504.  
  505. Step 13: Rendering.
  506.  
  507.  
  508. In the Project Editor, I alway render one test frame before 
  509. rendering the entire set of images.  At 10 minutes per image (on 
  510. a 28 MHz machine), that's a little over 10 hours for a 64 frame 
  511. animation. Therefore, caution is warranted.  I select frame 14 
  512. and click on "Generate".  When complete, an asterick (*) appears 
  513. below frame 1.  Now comes the moment of truth. With frame 14 
  514. still selected, I click on "Show".  Moments later I'm seeing a 
  515. HAM image of the earth rising above the moon's horizon. 
  516.  
  517. By my subproject specification, this picture was automatically 
  518. stored as df0:Im_Pix/Ham/pic.0014. The directory path to a floppy 
  519. disk is inadequate for holding the complete animation.  I can 
  520. check my animation directory path for this subproject  clicking 
  521. on the "Modify" box of the Project Editor.  Large frame 
  522. renderings can be only done on a path to hard disk. My selected 
  523. directory path is hd0:EarthAnim. Confident of my results, I 
  524. select the range of frames 1-64 and click "Generate".  See you in 
  525. the morning!
  526.  
  527. If you would like a disc containing a copy of the earth map, 
  528. cloud layer and moon horizon images; the earth, clouds, and moon 
  529. objects and the completed "Imagine" 3D rendering stage; and the 
  530. completed rendering of frame #14 as Ham, HamE, HiRes, and ILBM-24 
  531. of this animation, send $5.00 to cover postage and handling to:
  532.  
  533.             First Principles
  534.             Dr. Robert L. Kellogg
  535.             7509 Dew Wood Drive
  536.             Rockville, MD 20855
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.             
  547.  
  548.         
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.